perm filename SEDIT.LSP[SCH,LSP] blob
sn#688842 filedate 1982-11-14 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 -*-LISP-*-
C00007 ENDMK
C⊗;
;;;-*-LISP-*-
;;; To communicate with a text editor via VALRET's.
;;; Adapted for Maclisp in general from code in KMP's ULISP system.
;;; 12:57pm Monday, 24 August 1981 - George Carrette.
;;; 10:23pm Monday, 11 October 1982 - Mark Hamilton
;;; added expunge to velret-to-editor
(HERALD SEDIT)
(eval-when (compile) (load "scm:umacro"))
(DEFVAR *EDITOR-JOB-NAME* NIL) ;Job name of editor to use
(DEFVAR *EDITOR-COMM-FILE* ;File for editor communication
(caseq (status opsys)
((TOPS-20) "←SCHEDIT.LSP.0")
((ITS) "←SEDIT >")))
(DEFVAR *EDITOR-COMM-LOADER* 'LOAD) ;Function to load files
(DEFVAR *EDITOR-COMM-FILE-DELETE-AFTER-LOADER?* T)
(DEFUN TOPLEVEL-EDITOR-CALL (&OPTIONAL (JNAME NIL JNAME?))
(DELETE-LOST-COMM-FILES)
(NOINTERRUPT ())
(IF JNAME? (SETQ *EDITOR-JOB-NAME* JNAME))
(READ-EDITOR-NAME-IF-NEEDED)
(VALRET-TO-EDITOR)
(CLEAR-SCREEN)
(PRINC "Returning from Editor. ")
(PRINC (IF (PROCESS-COMM-FILES *editor-comm-loader*)
"Loading done. "
"No files to load. ")))
(DEFUN DELETE-LOST-COMM-FILES ()
(DO ((FILE (PROBEF *EDITOR-COMM-FILE*)
(PROBEF *EDITOR-COMM-FILE*)))
((NULL FILE))
(DELETEF FILE)))
(DEFUN READ-EDITOR-NAME-IF-NEEDED ()
(IF (NOT *EDITOR-JOB-NAME*)
(PROGN (TERPRI)
(PRINC "Editor Name: ")
(SETQ *EDITOR-JOB-NAME* (READ)))))
(DEFVAR MONITOR-CONTINUE-STRING "")
(DEFVAR MONITOR-EXPUNGE-STRING
(CASEQ (STATUS OPSYS)
((TOPS-20) "EXPUNGE")))
(DEFVAR DELIMITER-STRING
(IMPLODE (CASEQ (STATUS OPSYS)
((TOPS-20) '(#↑M #↑J))
((ITS) '(#↑H)))))
(DEFUN VALRET-TO-EDITOR ()
(COND ((STATUS FEATURE ITS)
(VALRET (MAKNAM (NCONC (EXPLODEN *EDITOR-JOB-NAME*)
(EXPLODEN DELIMITER-STRING)
(EXPLODEN MONITOR-EXPUNGE-STRING)
(EXPLODEN DELIMITER-STRING)))))
((STATUS FEATURE TOPS-20)
(VALRET (MAKNAM (NCONC (EXPLODEN MONITOR-CONTINUE-STRING)
(EXPLODEN MONITOR-EXPUNGE-STRING)
(EXPLODEN DELIMITER-STRING)
(EXPLODEN *EDITOR-JOB-NAME*)
(EXPLODEN DELIMITER-STRING)))))
('ELSE
(ERROR "inside unknown operating system"
'VALRET-TO-EDITOR
'FAIL-ACT))))
(DEFUN PROCESS-COMM-FILES (F)
(DO ((FILE)(FILEP NIL))
((NULL (SETQ FILE (PROBEF *EDITOR-COMM-FILE*)))
FILEP)
(SETQ FILEP T)
(UNWIND-PROTECT
(FUNCALL F FILE)
(IF *EDITOR-COMM-FILE-DELETE-AFTER-LOADER?* (DELETEF FILE)))))